Linux
Linux 基础
Linux的目录结构
对比
windows系统: 森林结构(森系,),有盘符的概念.
Linux系统: 树形结构,没有盘符的概念, 取而代之的是 根目录, 用
/ 来表示
Linux的目录结构图解

关于Linux的目录, 我们常用的是:
sh/bin 目录: 存储Linux基础命令的, 例如: cd, mv, cp... /sbin目录: 存储Linux进阶命令, 例如: ifconfig, ... /etc 目录: 存储的是Linux系统的配置信息. /root目录: 超管(超级管理员)目录, 也是 root账号所在的目录. /home目录: 普通账号的家目录, 我们创建的账号, 默认会存储在这里.
命令通用格式
command [-options] [parameter]
# command: 命令本身(必写)
# options: 命令的选项,控制命令的行为细节
# parameter: 命令的参数,控制命令的指向目标目录操作
ls 查看当前目录下的内容ls(list):显示所有
shls [-a -l -h] [文件夹路径] # a(all): 列出全部文件(包含隐藏的文件/文件夹) # l(line): 以行(竖向排列)的形式展示,显示详细信息 # h(human): 以人形化的形式展示内容(需与 -l 共用)sh【示例】 ls 查看当前目录下的内容(不包括隐藏) ls ./ 查看当前目录下的内容(不包括隐藏) ls -a 查看当前目录下的内容(包括隐藏) ls -l 以行的方式查看当前目录下的内容(不包括隐藏) ls -al 以行的方式查看当前目录下的内容(包括隐藏) ls -lh 以行, 人性化的方式查看当前目录下的内容(不包括隐藏) ls -alh 以行, 人性化的方式查看当前目录下的内容(包括隐藏) ls -lh /etc 以行, 人性化的方式查看指定目录下的内容(不包括隐藏) ll 等价于 ls -l
pwd 查看当前目录pwd(print work directory): 打印工作目录, 即: 当前所在的目录
shpwd
cd 目录切换cd(change directory):改变目录
shcd 目录路径sh【示例】 cd 要切换到的目录 # 切换路径. cd ./ # 切换到当前目录, 相当于: 啥都没做. cd / # 切换到根目录 cd ~ # 切换到家目录(等同于直接 cd) # 特殊路径 ./ # 代表当前目录 .. # 代表上级路径 ../.. # 代表上上级路径 ~ # 代表当前账号的家目录(root账号 -> /root, 其它账号 -> /home) - # 在最近操作过的两个目录之间做 切换
mkdir 创建目录mkdir(make directory):制作目录
shmkdir [-p] 目录路径 # 如果是创建多级目录需要加 -p
文件操作
touch 创建文件shtouch 文件路径
cat 翻页查看文件内容(默认为最后一页)shcat 文件路径
more 分页查看文件内容shmore 文件路径 # b -> back: 返回上一页 # d -> down: 下一页 # q -> quit: 退出 # enter: 下一行
cp 拷贝文件cp(copy):拷贝
shcp [-r] 源文件(夹)路径 目的地文件(夹)路径 # 拷贝文件夹 -r
mv 移动文件mv(move):移动,剪切
shmv 源位置 目的地 # 可用于“重命名”
rm 删除文件rm(remove):删除
shrm [-r -f] 文件夹(文件路径) # -f : force 强制删除,不提示 # -r : recursive 递归删除 rm -rf 文件(夹) # 直接删除无提示(文件/文件夹) rm -rf /* # 相当于删盘符,慎重
查找相关
which 查找Linux 命令所在的目录shwhich Linux的命令名
find 根据文件名 或者 文件大小,查找对应的文件shfind 要查找的路径 -name '*文件名' # *代表 通配符. find 要查找的路径 -size +10M # 查找大小在10M以上的文件
管道命令和过滤
grep 过滤,显示过滤内容的所在行shgrep [-n] 关键字 文件路径 # -n : 在结果中显示匹配关键字的行号
| 管道命令,将前边命令的执行结果,作为后边命令的数据源来处理(即:将前边的输出作为后边的输入)sh命令 | 命令 # 例: cat 1.txt | grep python | grep pandas # 从1.txt文件中过滤出python, 在其基础上再过滤出pandas
echo、重定向、tail
echo 在命令行内输出指定内容shecho "输出的内容"
` 反引号,将字符串当成linux命令执行shecho `pwd` # 将pwd作为命令执行并将其结果输出重定向符
> 将左侧命令的结果,覆盖写入到符号右侧指定的文件中
>> 将左侧命令的结果,追加写入到符号右侧指定的文件中
shecho 'hello' > 1.txt # 将"hello"覆盖写入1.txt echo ' world' >> 1.txt # 将" world"追加写入1.txt ls / >> 2.txt # 将ls /的返回结果,写入2.txt
tail 查看文件尾部内容,跟踪文件的最新更改使用场景:查看日志文件
shtail [-f -num] 文件路径 # -f : 持续跟踪 # -num : 查看尾部行数(默认10行) # 例:持续跟踪日志文件 tail -100f python.log
head 查看文件头部内容shhead [-num] 文件路径 # -num : 查看头部行数(默认10行)
查看命令的帮助手册
# --help 属性
命令名 --help # 例如: ls --help
# 格式:man 命令名
man ls # 查看ls命令的使用手册
man ls >> ls.txt # 把ls命令的使用方式保存到文件中.vi、vim 编辑器
vi(visual interface),Linux中的文本编辑器
vim 为 vi 的加强版,兼容 vi 的所有指令,且具有 shell 程序编辑的功能,可以通过字体颜色辨别语法的正确性

三种工作模式
命令模式(command mode):此模式以命令驱动执行不同的功能(不能自由进行文本编辑)
输入模式(insert mode):即编辑模式,可对文件内容自由编辑
底线命令模式(last line mode):以
: 为前缀,通常用于文件的保存、退出
【简单示例】
vim 1.txt # 进入文件
---------- 文件内部 ----------
按下键盘 i,进入编辑模式
编辑完成
按下 Esc,退出编辑模式
输入 :wq,保存并退出文件
---------- "1.txt" ----------
【命令模式】
i 在当前位置插入
o 向下插入一行
O 向上插入一行
gg 回到文件头部(首行)
G 回到文件末尾(尾行)
dd 删除当前行
ndd 连续向下删除n行(包括当前行)
yy 复制当前行
nyy 连续向下复制n行(包括当前行)
p 粘贴
u 侧销
ctrl + r 反撤销
shift + z + z 等同于 :wq
/内容 查找内容,找到后高亮显示
【底线(底行)模式】
:wq 保存并退出
:wq! 强制保存并退出
:q 退出
:q! 强制退出
:set nu 设置行号
:set nonu 取消行号
:nohl 取消高亮
:行数 跳转到指定行Linux 中的用户
root 用户(超级管理员)拥有最大的系统操作权限,而普通用户在许多地方的权限是受限的
创建用户
shuseradd -m 用户名 # 创建用户 passwd 用户名 # 为用户指定密码 su 用户名 # 切换用户 sudo 其它命令 # 借用root权限为创建的用户赋予权限
shvim /etc/sudoers visudo /etc/sudoers # 保存时会自动检测,报错则拒绝写入 # 找到“root ALL=(ALL) ALL”这一行,照着模样在下面加 用户名 ALL=(ALL) ALL
权限控制:chmod 命令
更改权限:修改文件、文件夹的权限信息
chmod [-R] 权限 文件(文件夹)
# -R : 对文件夹内的全部内容应用同样的操作
# 例:传统写法
chmod u=rwx, g=rx, o=x text.txt # 将文件权限修改为:rwxr-x--x
chmod -R u=rwx, g=rx, o=x text # 将文件夹test及其内全部内容的权限设置为:rwxr-x--x
# u: user所属用户权限
# g:group组权限
# o:other其它用户权限
chmod -R +r text # 为所有用户添加 r权限
chmod -R g-w text # 将group组的 w权限 删除
# 例:引入数字权限(常用)
chmod 777 text.txt # 将文件权限修改为:rwxrwxrwx
chmod -R 751 text # 将文件夹test及其内全部内容的权限设置为:rwxr-x--x权限符号
shr 只读 w 只写 x 可执行 - 无权限权限的数字序号:用3位数字分别代表,用户权限、用户组权限、其它用户权限
sh0 无任何权限 即 --- 1 仅有x权限 即 --x 2 仅有w权限 即 -w- 3 有w和x权限 即 -wx 4 仅有r权限 即 r-- 5 有r和x权限 即 r-x 6 有r和w权限 即 rw- 7 有全部权限 即 rwx
修改用户和用户组
# 格式
chown [-R] [用户][:][用户组] 文件或者文件夹路径
# 例子
chown zhangsan 1.txt # 改变 用户
chown :zhangsan 1.txt # 改变 用户组快捷键
ctrl + c 强制停止
ctrl + d 退出或登出
历史命令搜索
history 查看历史命令
!命令前缀 自动执行匹配前缀的上一次命令 并执行ctrl + r 输入内容去匹配历史命令
键盘 ← → 键 选择命令
若命令是需要的,按enter回车直接执行
光标移动快捷键
ctrl + a 跳到命令开头
ctrl + e 跳到命令结尾
ctrl + ← 向左跳一个单词
ctrl + → 向右跳一个单词
清屏
ctrl + l
clear
Linux的服务控制命令
# 命令格式
systemctl start | stop | restart | status | enable | disable 服务名
# 如果你的虚拟机的IP突然变成了127.0.0.1这种情况, 解决方案如下:
systemctl stop NetworkManager # 关闭主网络服务
systemctl disable NetworkManager # 禁用主网络服务开机自启动
systemctl restart network # 重启副网络服务
ifconfig # 重新查看IPLinux 软件安装
方式一:手动下载安装包,并手动安装
方式二:RPM包管理器(RedHat Packet Management, 小红帽的包管理器),会自动下载包,但是不会解决依赖
方式三:
yum 命令安装,自动去Linux的应用商店中搜索并安装,并自动解决依赖问题shyum [-y] [install | remove | search] 软件名称 # -y 自动确认,无需手动确认或卸载过程 # install 安装 # search 搜索 #【注】需要root权限
软连接
在系统中创建软链接,可以将文件、文件夹链接到其它位置(类似win中的快捷方式)
ln -s 参数1 参数2
# -s 创建软连接
# 参数1 被链接的文件或文件夹
# 参数2 链接的目的地
【硬链接】
ln 要被链接的文件路径 硬链接名
# 作用: 动态备份.
ln 1.txt 3.txt # 无论是修改1.txt 还是 3.txt, 另一个都会同步改变.
# 删除源文件,链接仍可用
ln -s /etc/sysconfig/network-scripts/ifcfg-ens33 ip
vim ip # 修改IP,不再需要找要修改的文件【扩展】修改IP
打开并编辑文件 /etc/sysconfig/network-scripts/ifcfg-ens33
shTYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="none" # ip分配方式, none, static, dhcp DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="ens33" UUID="df73d9da-f16b-4a80-beac-e4e5602703f7" DEVICE="ens33" ONBOOT="yes" IPV6_PRIVACY="no" IPADDR="192.168.88.77" # ip地址,修改ip地址 PREFIX="24" # 子网掩码, 或者写为 NETMASK="255.255.255.0" GATEWAY="192.168.88.1" # 网关, 要和: Vmware软件的虚拟网络编辑器 和 本地VMNet8网卡保持一致. DNS1="8.8.8.8" # DNS服务器1 DOMAIN="114.114.114.114" # DNS服务器2重启副网络服务
shsystemctl restart network # 重启副网络服务 ifconfig # 查看IP
Linux 网络相关
查看本机 IP地址
shifconfig查看本机的主机名
shhostname修改本机的主机名
shhostnamectl set-hostname 修改后的主机名配置域名解析(主机名映射)
好处:可以通过主机名找到对应计算机的IP地址
先通过系统本地的记录去查找,如果找不到就联网去公开DNS服务器去查找
sh# 配置域名映射 vim /etc/hosts # ---------- hosts ---------- IP地址 域名 [域名2 ...] # 在末尾追加一行 # --------------------------- # :wq 保存退出即可生效 # 修改windows系统的域名映射(使用虚拟机Linux的情况下) 打开文件 c:/Windows/System32/drivers/etc/hosts IP地址 域名 [域名2 ...] # 添加域名映射
wget 下载网络资源shwget url地址
curl Linux向url地址发起请求, 获取响应信息, 模拟爬虫.shcurl url地址查看端口号
shnetstat -anp # anp: all network port # 结合管道符 和 过滤命令一起用 netstat -anp | grep 3306 netstat -anp | grep ssh
Linux的进程相关
# 查看本机所有的进程
ps -ef
# 过滤出指定的进程
ps -ef | grep 进程名
ps -ef | grep 进程id
# 强制杀死(关闭)进程.
kill -9 pid值 # 进程id(pid)Linux的压缩和解压缩
方式一:tarball 归档方式
.tar (tarball)归档文件,简单的将文件组装到一个.tar 的文件内,仅仅是简单的封装
.gz (.tar.gz\gzip)使用gzip压缩算法将文件压缩到一个文件内,可以极大的减少压缩后的体积shtar [-c -v -x -f -z -C] 参数1 参数2 ... # -c 创建压缩文件,用于压缩模式 # -v 显示压缩、解压过程,用于查看进度 # -x 解压模式 # -f 要解压的文件(-f需要在所有选项中处于最后) # -z gzip模式(默认为普通 tarball模式) # -C 选择解压的目的地,用于解压模式sh# 压缩 tar -zcvf 压缩包名.tar.gz 要被压缩的文件 # 解压缩 tar -zxvf 压缩包名.tar.gz -C 要解压到的路径方式二:
zip 和unzipsh# 压缩 zip -r 压缩包名.zip 文件 目录的路径 # 解压 unzip 压缩包名.zip -d 解压到的目录